package common;

import java.io.File;
import java.io.IOException;

/**
 * 操作config.txt
 * @author MaoJJ
 *
 */
public class Config extends FileOperation
{
	/**
	 * config.txt数据
	 */
	private static String[] configData;
	
	/**
	 * 将config.txt数据加载到configData
	 * @throws IOException 
	 */
	private static void initialize() throws IOException
	{
		String fileName = System.getProperty("user.dir")
				+ File.separator + "config"
				+ File.separator+ "config.txt";
		configData = read(fileName);
	}

	/**
	 * 返回配置项值
	 * @param configType - 配置项类型
	 * @param configName - 配置项名称
	 * @return 配置项值
	 * @throws IOException 
	 */
	public static String getValue(String configType, String configName) throws IOException
	{
		//初始化
		initialize();
	
		//如果配置项类型不包含[]，添加[]
		if (!configType.startsWith("[") && !configType.endsWith("]"))
		{
			configType = "[" + configType + "]";
		}
		
		//查找配置项类型
		int startIndex = 0;						//初始化配置项起始位置
		int endtIndex = configData.length-1;	//初始化配置项结束位置
		out: for (int i=0; i<configData.length; i++)
		{
			if (configData[i].equalsIgnoreCase(configType))
			{
				startIndex = i+1;				//查询到配置项类型后，设置配置项起始位置
				for (int j=i+1; j<configData.length; j++)
				{
					if (configData[j].startsWith("[") && configData[j].endsWith("]"))
					{
						endtIndex = j-1;	//查询到配置项类型后，非最后一个配置项类型，设置配置项结束位置
						break out;
					}
					else if (j == configData.length-1)
					{
						endtIndex = j;		//查询到配置项类型后，是最后一个配置项类型，设置配置项结束位置
						break out;
					}
				}
			}
		}
		//不存在配置项类型，返回null
		if (startIndex == 0)
		{
			return null;
		}
		
		//查找配置项名称，返回配置项值
		for (int i=startIndex; i<endtIndex+1; i++)
		{
			String[] separatorConfig = configData[i].split("=", 2);			//用=分割配置项名称和配置项值
			//判断是否匹配配置项名称，如果匹配，返回配置项值
			if (separatorConfig[0].equalsIgnoreCase(configName))
			{
				return separatorConfig[1];
			}
		}
		//不存在配置项名称，返回null
		return null;
	}
	
}
